package common.model.Entity.libraryEntity;

import lombok.Getter;
import lombok.Setter;
import java.util.Date;
import common.model.Entity.BaseEntity;
import module.library.service.impl.BookManagementServiceImpl;

/**
 * 图书基本信息实体类
 *
 * <p>一本 {@code Book} 对应唯一的 ISBN，可以拥有多本 {@code BookItem} 副本。</p>
 *
 * <p>使用 Lombok 自动生成 Getter/Setter 方法，继承自 {@link common.model.Entity.BaseEntity}。</p>
 */
@Getter
@Setter
public class Book extends BaseEntity{
    /**
     * 书名
     */
    private String title;

    /**
     * 作者
     */
    private String author;

    /**
     * 出版社
     */
    private String publisher;

    /**
     * ISBN号
     */
    private String isbn;

    /**
     * 馆藏总数量
     */
    private Integer stock;

    /**
     * 主题分类
     */
    private String category;

    /**
     * 当前可借阅数量
     */
    private Integer available;

    /**
     * 无参构造器
     */
    public Book() {}

    /**
     * 全参构造器
     * @param id            实体主键
     * @param title         书名
     * @param author        作者
     * @param publisher     出版社
     * @param isbn          isbn编号
     * @param stock         馆藏总数量
     * @param category      主题分类
     * @param available     可借阅数量 如果传入{@code null}，则默认等于馆藏总数量
     */
    public Book(Long id,String title, String author, String publisher, String isbn, Integer stock, String category, Integer available) {
        super(id);
        this.title = title;
        this.author = author;
        this.publisher = publisher;
        this.isbn = isbn;
        this.stock = stock;
        this.category = category;
        this.available = available != null ? available : stock;
    }
}
